package com.example.kotlindemo

import android.app.AlertDialog
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import java.text.SimpleDateFormat
import java.util.*
import java.util.zip.Inflater

class MainActivity : AppCompatActivity() {
    lateinit var textView: TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    /**
     * kotlin的简写技巧
     */
    fun simpleFun() {
        //正常的写法
        Button(this).setOnClickListener( object :View.OnClickListener{
            override fun onClick(v: View?) {
                println("这是正常点的写法")
            }
        })
//        第一种方法，使用lambda表达式
        Button(this).setOnClickListener({ v: View? -> println("第一种方法，使用lambda表达式") })
//        第二种方法，借助Kotlin的智能推到，忽略数据类型
        Button(this).setOnClickListener({ v -> println("第二种方法，借助Kotlin的智能推到，忽略数据类型") })
//        第三种方法，当只有一个参数可以忽略，使用it代替
        Button(this).setOnClickListener({
            println("第三种方法，当只有一个参数可以忽略，使用it代替")
        })
//        第四种方法，若函数的最后一位是函数，则可以将{}实现提到()外面
        Button(this).setOnClickListener() {
            println("第四种方法，若函数的最后一位是函数，则可以将{}实现提到()外面")
        }
//        第五种方法，直接去掉()
        Button(this).setOnClickListener {
            println("第五种方法，直接去掉()")
        }
//        第四种方法的实例
        var items = Array<String>(12, { x -> "str$x" })
        var builder = AlertDialog.Builder(this)
        //正常写法
        builder.setItems(items, object : DialogInterface.OnClickListener {
            override fun onClick(dialog: DialogInterface?, which: Int) {
                showToast("$which")
            }

        }).show()
        //简单写法,将最后面的函数的实现放到()符号的{}后面
        builder.setItems(items) {
                dialog: DialogInterface, which: Int -> showToast("$which")
//            dialog,which -> showToast("$which") //最简单的写法

        }.show()

    }

    fun show(view: View) {

    }

    fun showToast(str: String) {
        Toast.makeText(this, str, Toast.LENGTH_SHORT).show()
    }
}